home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ASP Advantage 1993
/
The Association of Shareware Professionals Advantage CD-ROM 1993.iso
/
files
/
utilties
/
quickext
/
quickext.doc
< prev
next >
Wrap
Text File
|
1992-07-01
|
5KB
|
130 lines
_______
____|__ | (R)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| MEMBER
This program replaces int 15h function 87h
It runs on 80286 only! No 8086, no 8088, and (in spite of upward
compatibility) no 80386!
It serves to make moves to and from extended memory more
efficient, resulting in better performance if you do many such
moves.
Whenever the 8086 addresses memory, it performs the following
address-calculation: 10h x segment + offset. Since both
segment and offset have 16 bits, the address is limited to 20
bits, or 1,048,576. This is the addressing-capacity of the 8086.
The 80286 has 24 addressing-bits, but in real mode, it performs
the same address-calculation as the 8086, still limiting memory
to 1,048,576, well, actually a little bit more because of carry
into to 21st bit.
To address more memory, the 80286 must be switched to protected
mode. That's fine, but it is a terrible job to get the 80286 back
to real mode.
But there is another way.
In fact, address calculation of the 80286 in real mode is
different.
Whenever in real mode a segment register is loaded, the 80286
multiplies its new value by 10h and stores the result in the
24-bit descriptor cache. The segment register is thenceforth
ignored, to address memory, the 80286 adds the offset to the
value in the descriptor cache.
In real mode, the contents of the descriptor cache is always 10h
times the contents of the segment register. Its upper four bits
and its lower four bits are always zero.
There is no way to load the segment register and the descriptor
cache independently.
No, there is! There is the LOADALL instruction, which loads
every register independent from any other register. The exciting
thing about this instruction is that it is possible to set the
upper four bits of the descriptor cache while remaining in real
mode.
This program is a TSR. It takes very little memory. It uses
loadall to set a descriptor cache, and moves data to/from any
place in memory. Thus it replaces the protected mode and
cumbersome return to real mode which is used by your ROM-BIOS.
This program is available as shareware. You are free to use it.
You are free to give it away to any friend, provided it is not
modified in any way, the source is included, and no charge is
payed, except for a small amount for the diskette.
Whether you are satisfied or not, I would appreciate if you drop
me a line or phone me.
Feico Nater
Beukweg 24
7556 DE Hengelo
the Netherlands
phone 31 74 438373
Dit programma vervangt int 15h functie 87h
Het loopt uitsluitend op een 80286! Niet op 8086, niet op 8088,
en (ondanks de opwaartse compatibiliteit) niet op 80386!
Het dient om efficienter gegevens te kunnen verplaatsen van en
naar extended memory, waardoor de performance van de computer
verbetert.
Steeds als de 8086 het geheugen adresseert, dan wordt de volgende
adres-berekening uitgevoerd: 10h x segment + offset. Segment
en offset hebben elk 16 bits, en het adres is dus beperkt tot 20
bits, of 1,048,576. Dit is de adresseercapaciteit van de 8086.
De 80286 heeft 24 adresbits, maar in real mode, doet hij dezelfde
adres-berekening als de 8086, waardoor het geheugen nog steeds
beperkt is tot 1,048,576, eigenlijk iets meer door de overdracht
in het 21ste bit.
Om meer geheugen te adresseren moet de 80286 in protected mode
worden gezet.
Dat is geen probleem, maar terugschakelen naar real mode is
bijzonder omslachtig.
Maar er is een andere manier.
Eigenlijk is de adresberekening door de 80286 in real mode iets
anders.
Als in real mode een segmentregister wordt geladen, dan
vermenigvuldigt de 80286 de nieuwe waarde met 10h. Het resultaat
wordt opgeslagen in de descriptor cache, die 24 bits groot is.
Het segmentregister wordt verder genegeerd, om geheugen te
adresseren telt de 80286 de offset op bij de waarde in de
descriptor cache.
In real mode bevat de descriptor cache dus altijd 10h keer zoveel
als het segmentregister. De hoogste vier bits en de laagste vier
bits zijn altijd nul.
Er is geen manier om het segmentregister en de descriptor cache
onafhankelijk van elkaar te laden.
Of toch! Het kan met de LOADALL instructie, die elk register
onafhankelijk van elk ander register laadt. Het opwindende van
deze instructie is dat het mogelijk is de hoogste vier bits van
de descriptor cache een waarde te geven zonder naar protected
mode te gaan.
Dit programma is een TSR. Het neemt niet veel geheugen in
beslag. Het gebruikt LOADALL om de descriptor cache te laden en
verplaatst gegevens van en naar elke plaats in het geheugen.
Zodoende vervangt het de methode via protected mode en de
omslachtige terugkeer naar real mode die in het ROM-BIOS wordt
gebruikt.
Dit programma is beschikbaar als shareware. U mag het vrijelijk
gebruiken. U mag een copie aan vrienden geven, mits het niet op
enigerlei wijze gewijzigd wordt, de brontekst erbij geleverd
wordt en geen betaling wordt verlangd, behalve een klein bedrag
voor het schijfje.
Tevreden of niet, ik zou het op prijs stellen als u me een
briefje schrijft of me opbelt.
Feico Nater
Beukweg 24
7556 DE Hengelo
tel 074 438373